import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import pandas_datareader as dr
import datetime as dt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
dataset_train = pd.read_csv('D:\MeezanBankTrain.csv')
training_set = dataset_train.iloc[:, 4:5].values
stock_price_train = dataset_train.iloc[:-120, 4:5].values
sc = MinMaxScaler(feature_range = (0, 1))
training_set_scaled = sc.fit_transform(training_set).reshape(-1,1)
X_train = []
y_train = []
for i in range(120, len(training_set_scaled)):
X_train.append(training_set_scaled[i-120:i, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100 31/31 [==============================] - 14s 214ms/step - loss: 0.0203 Epoch 2/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0055 Epoch 3/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0042 Epoch 4/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0042 Epoch 5/100 31/31 [==============================] - 7s 215ms/step - loss: 0.0034 Epoch 6/100 31/31 [==============================] - 7s 223ms/step - loss: 0.0033 Epoch 7/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0029 Epoch 8/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0033 Epoch 9/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0028 Epoch 10/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0029 Epoch 11/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0027 Epoch 12/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0037 Epoch 13/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0025 Epoch 14/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0024 Epoch 15/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0023 Epoch 16/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0027 Epoch 17/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0023 Epoch 18/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0023 Epoch 19/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0024 Epoch 20/100 31/31 [==============================] - 6s 209ms/step - loss: 0.0025 Epoch 21/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0018 Epoch 22/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0020 Epoch 23/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0021 Epoch 24/100 31/31 [==============================] - 7s 225ms/step - loss: 0.0020 Epoch 25/100 31/31 [==============================] - 7s 238ms/step - loss: 0.0020 Epoch 26/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0019 Epoch 27/100 31/31 [==============================] - 7s 232ms/step - loss: 0.0020 Epoch 28/100 31/31 [==============================] - 7s 238ms/step - loss: 0.0017 Epoch 29/100 31/31 [==============================] - 7s 224ms/step - loss: 0.0017 Epoch 30/100 31/31 [==============================] - 7s 225ms/step - loss: 0.0016 Epoch 31/100 31/31 [==============================] - 7s 219ms/step - loss: 0.0018 Epoch 32/100 31/31 [==============================] - 7s 217ms/step - loss: 0.0017 Epoch 33/100 31/31 [==============================] - 7s 224ms/step - loss: 0.0017 1s - lo Epoch 34/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0016 Epoch 35/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0016 Epoch 36/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0017 Epoch 37/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0016 Epoch 38/100 31/31 [==============================] - 6s 209ms/step - loss: 0.0017 Epoch 39/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0016 Epoch 40/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0013 Epoch 41/100 31/31 [==============================] - 7s 217ms/step - loss: 0.0015 Epoch 42/100 31/31 [==============================] - 7s 223ms/step - loss: 0.0014 Epoch 43/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0015 Epoch 44/100 31/31 [==============================] - 7s 214ms/step - loss: 0.0016 Epoch 45/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0014 Epoch 46/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0014 Epoch 47/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0015 Epoch 48/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0013 Epoch 49/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0013 Epoch 50/100 31/31 [==============================] - 7s 217ms/step - loss: 0.0015 Epoch 51/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0014 Epoch 52/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0012 Epoch 53/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0013 Epoch 54/100 31/31 [==============================] - 7s 214ms/step - loss: 0.0012 Epoch 55/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0012 Epoch 56/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0012 Epoch 57/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0011 Epoch 58/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0012 Epoch 59/100 31/31 [==============================] - 7s 216ms/step - loss: 0.0013 Epoch 60/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0012 Epoch 61/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0013 Epoch 62/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0014 Epoch 63/100 31/31 [==============================] - 8s 272ms/step - loss: 0.0011 Epoch 64/100 31/31 [==============================] - 6s 209ms/step - loss: 0.0011 Epoch 65/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0013 Epoch 66/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0011 Epoch 67/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0012 Epoch 68/100 31/31 [==============================] - 8s 274ms/step - loss: 0.0011 Epoch 69/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0011 Epoch 70/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0011 Epoch 71/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0010 Epoch 72/100 31/31 [==============================] - 6s 210ms/step - loss: 0.0010 Epoch 73/100 31/31 [==============================] - 8s 273ms/step - loss: 9.4430e-04 Epoch 74/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0010 Epoch 75/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0010 Epoch 76/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0010 Epoch 77/100 31/31 [==============================] - 9s 284ms/step - loss: 0.0010 Epoch 78/100 31/31 [==============================] - 7s 217ms/step - loss: 9.3335e-04 Epoch 79/100 31/31 [==============================] - 7s 242ms/step - loss: 0.0011 Epoch 80/100 31/31 [==============================] - 7s 217ms/step - loss: 9.8427e-04 Epoch 81/100 31/31 [==============================] - 9s 288ms/step - loss: 9.5096e-04 Epoch 82/100 31/31 [==============================] - 7s 240ms/step - loss: 9.5110e-04 Epoch 83/100 31/31 [==============================] - 10s 317ms/step - loss: 9.5059e-04 Epoch 84/100 31/31 [==============================] - 8s 259ms/step - loss: 0.0010 Epoch 85/100 31/31 [==============================] - 9s 297ms/step - loss: 8.5893e-04 Epoch 86/100 31/31 [==============================] - 8s 245ms/step - loss: 8.8234e-04 Epoch 87/100 31/31 [==============================] - 7s 223ms/step - loss: 0.0010 Epoch 88/100 31/31 [==============================] - 9s 277ms/step - loss: 8.9222e-04 Epoch 89/100 31/31 [==============================] - 7s 216ms/step - loss: 0.0012 Epoch 90/100 31/31 [==============================] - 7s 216ms/step - loss: 9.3046e-04 Epoch 91/100 31/31 [==============================] - 9s 278ms/step - loss: 8.7624e-04 Epoch 92/100 31/31 [==============================] - 7s 224ms/step - loss: 8.9251e-04 Epoch 93/100 31/31 [==============================] - 9s 298ms/step - loss: 9.1918e-04 Epoch 94/100 31/31 [==============================] - 7s 218ms/step - loss: 8.6880e-04 Epoch 95/100 31/31 [==============================] - 7s 217ms/step - loss: 8.6037e-04 Epoch 96/100 31/31 [==============================] - 9s 279ms/step - loss: 7.8722e-04 Epoch 97/100 31/31 [==============================] - 7s 216ms/step - loss: 7.8024e-04 Epoch 98/100 31/31 [==============================] - 7s 232ms/step - loss: 8.5672e-04 Epoch 99/100 31/31 [==============================] - 8s 256ms/step - loss: 7.8421e-04 Epoch 100/100 31/31 [==============================] - 7s 220ms/step - loss: 7.2124e-04
<keras.callbacks.History at 0x1a3cd895e20>
history = regressor.fit(X_train, y_train, validation_split=0.33, epochs=150, batch_size=10, verbose=0)
# list all data in history
print(history.history.keys())
dict_keys(['loss', 'val_loss'])
# import matplotlib as plt
# # summarize history for accuracy
# plt.plot(history.history['accuracy'])
# plt.plot(history.history['val_accuracy'])
# plt.title('model accuracy')
# plt.ylabel('accuracy')
# plt.xlabel('epoch')
# plt.legend(['train', 'test'], loc='upper left')
# plt.show()
# summarize history for loss
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'],loc='upper right')
plt.grid()
plt.show()
dataset_test = pd.read_csv('D:/MeezanBankTest.csv')
dataset_test.replace(' ','',inplace=True)
dataset_test = dataset_test.dropna()
data2 = dataset_test.iloc[:, 4:5].values
total_test = pd.concat((dataset_train['Close'], dataset_test['Close']), axis=0)
inputs = total_test[len(total_test) - len(dataset_test) - 120:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(120, len(inputs)):
X_test.append(inputs[i-120:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = regressor.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
predicted_stock_price_train = regressor.predict(X_train)
predicted_stock_price_train = sc.inverse_transform(predicted_stock_price_train)
predicted_stock_price_train.shape
(991, 1)
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(dataset_test['Close'], color = 'red', label = 'Real Meezan Stock Price')
plt.plot(predicted_stock_price, color = 'blue', label = 'Predicted Meezan Stock Price')
plt.title('Meezan Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Meezan Stock Price')
plt.legend()
plt.grid()
plt.show()
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
testScore =(mean_squared_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f RMSE' % (testScore))
print('Test Score: %.2f MAE' % mean_absolute_error(dataset_test['Close'], predicted_stock_price))
print('Test Score: %.2f R2' % r2_score(dataset_test['Close'],predicted_stock_price))
Test Score: 34.94 RMSE Test Score: 4.07 MAE Test Score: 0.56 R2
print(mean_squared_error(stock_price_train, predicted_stock_price_train))
print(r2_score(stock_price_train, predicted_stock_price_train))
307.36942943796237 -0.9811720174403711
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(stock_price_train, color = 'red', label = 'Real Meezan Stock Price')
plt.plot(predicted_stock_price_train, color = 'blue', label = 'Predicted Meezan Stock Price')
plt.title('Meezan Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Meezan Stock Price')
plt.legend()
plt.grid()
plt.show()
real_data = [inputs[len(inputs) - 120:len(inputs + 1), 0]]
real_data = np.array(real_data)
real_data = np.reshape(real_data , (real_data.shape[0], real_data.shape[1], 1))
prediction = regressor.predict(real_data)
prediction = sc.inverse_transform(prediction)
print(f"Prediction : {prediction}")
Prediction : [[132.94518]]
regressor_30 = Sequential()
regressor_30.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50, return_sequences = True))
regressor_30.add(Dropout(0.2))
regressor_30.add(LSTM(units = 50))
regressor_30.add(Dropout(0.2))
regressor_30.add(Dense(units = 30))
regressor_30.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor_30.fit(X_train, y_train, epochs = 100, batch_size = 32, verbose='auto')
Epoch 1/100 31/31 [==============================] - 15s 228ms/step - loss: 0.0503 Epoch 2/100 31/31 [==============================] - 7s 218ms/step - loss: 0.0139 Epoch 3/100 31/31 [==============================] - 7s 220ms/step - loss: 0.0097 Epoch 4/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0076 Epoch 5/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0064 Epoch 6/100 31/31 [==============================] - 7s 214ms/step - loss: 0.0061 Epoch 7/100 31/31 [==============================] - 7s 221ms/step - loss: 0.0052 Epoch 8/100 31/31 [==============================] - 7s 215ms/step - loss: 0.0048 Epoch 9/100 31/31 [==============================] - 7s 219ms/step - loss: 0.0045 Epoch 10/100 31/31 [==============================] - 7s 219ms/step - loss: 0.0046 Epoch 11/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0043 Epoch 12/100 31/31 [==============================] - 7s 215ms/step - loss: 0.0040 Epoch 13/100 31/31 [==============================] - 7s 224ms/step - loss: 0.0035 Epoch 14/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0036 Epoch 15/100 31/31 [==============================] - 7s 214ms/step - loss: 0.0034 Epoch 16/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0030 Epoch 17/100 31/31 [==============================] - 8s 275ms/step - loss: 0.0031 Epoch 18/100 31/31 [==============================] - 8s 247ms/step - loss: 0.0030 Epoch 19/100 31/31 [==============================] - 7s 240ms/step - loss: 0.0027 Epoch 20/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0025 Epoch 21/100 31/31 [==============================] - 7s 224ms/step - loss: 0.0027 Epoch 22/100 31/31 [==============================] - 7s 217ms/step - loss: 0.0025 Epoch 23/100 31/31 [==============================] - 7s 220ms/step - loss: 0.0023 Epoch 24/100 31/31 [==============================] - 7s 238ms/step - loss: 0.0023 Epoch 25/100 31/31 [==============================] - 7s 222ms/step - loss: 0.0022 Epoch 26/100 31/31 [==============================] - 7s 225ms/step - loss: 0.0021 Epoch 27/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0020 Epoch 28/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0020 Epoch 29/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0022 Epoch 30/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0020 Epoch 31/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0022 Epoch 32/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0018 Epoch 33/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0019 Epoch 34/100 31/31 [==============================] - 7s 217ms/step - loss: 0.0018 Epoch 35/100 31/31 [==============================] - 8s 274ms/step - loss: 0.0018 Epoch 36/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0017 Epoch 37/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0018 Epoch 38/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0016 Epoch 39/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0016 Epoch 40/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0017 Epoch 41/100 31/31 [==============================] - 9s 283ms/step - loss: 0.0015 Epoch 42/100 31/31 [==============================] - 7s 240ms/step - loss: 0.0017 Epoch 43/100 31/31 [==============================] - 7s 223ms/step - loss: 0.0014 Epoch 44/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0013 Epoch 45/100 31/31 [==============================] - 8s 265ms/step - loss: 0.0014 Epoch 46/100 31/31 [==============================] - 7s 215ms/step - loss: 0.0014 Epoch 47/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0013 Epoch 48/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0015 Epoch 49/100 31/31 [==============================] - 8s 275ms/step - loss: 0.0013 Epoch 50/100 31/31 [==============================] - 7s 215ms/step - loss: 0.0013 Epoch 51/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0014 Epoch 52/100 31/31 [==============================] - 9s 277ms/step - loss: 0.0011 Epoch 53/100 31/31 [==============================] - 7s 210ms/step - loss: 0.0012 Epoch 54/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0012 Epoch 55/100 31/31 [==============================] - 8s 268ms/step - loss: 0.0011 Epoch 56/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0012 Epoch 57/100 31/31 [==============================] - 8s 273ms/step - loss: 0.0012 Epoch 58/100 31/31 [==============================] - 7s 224ms/step - loss: 0.0011 Epoch 59/100 31/31 [==============================] - 9s 278ms/step - loss: 0.0011 Epoch 60/100 31/31 [==============================] - 7s 211ms/step - loss: 0.0011 Epoch 61/100 31/31 [==============================] - 9s 280ms/step - loss: 9.6418e-04 Epoch 62/100 31/31 [==============================] - 7s 228ms/step - loss: 0.0010 Epoch 63/100 31/31 [==============================] - 8s 275ms/step - loss: 0.0010 Epoch 64/100 31/31 [==============================] - 7s 212ms/step - loss: 0.0010 Epoch 65/100 31/31 [==============================] - 8s 274ms/step - loss: 0.0011 Epoch 66/100 31/31 [==============================] - 7s 214ms/step - loss: 9.7839e-04 Epoch 67/100 31/31 [==============================] - 7s 227ms/step - loss: 9.8499e-04 Epoch 68/100 31/31 [==============================] - 8s 248ms/step - loss: 0.0011 Epoch 69/100 31/31 [==============================] - 7s 213ms/step - loss: 0.0012 Epoch 70/100 31/31 [==============================] - 8s 275ms/step - loss: 9.4076e-04 Epoch 71/100 31/31 [==============================] - 7s 237ms/step - loss: 9.7838e-04 1s - loss: 9.09 Epoch 72/100 31/31 [==============================] - 8s 238ms/step - loss: 9.2363e-04 Epoch 73/100 31/31 [==============================] - 7s 237ms/step - loss: 9.6621e-04 Epoch 74/100 31/31 [==============================] - 8s 252ms/step - loss: 9.7447e-04 Epoch 75/100 31/31 [==============================] - 9s 292ms/step - loss: 9.4819e-04 Epoch 76/100 31/31 [==============================] - 7s 222ms/step - loss: 9.3123e-04 Epoch 77/100 31/31 [==============================] - 9s 280ms/step - loss: 8.8864e-04 Epoch 78/100 31/31 [==============================] - 7s 219ms/step - loss: 8.5989e-04 Epoch 79/100 31/31 [==============================] - 8s 261ms/step - loss: 9.1927e-04 Epoch 80/100 31/31 [==============================] - 8s 276ms/step - loss: 8.7506e-04 Epoch 81/100 31/31 [==============================] - 7s 214ms/step - loss: 8.3994e-04 Epoch 82/100 31/31 [==============================] - 7s 232ms/step - loss: 7.7884e-04 Epoch 83/100 31/31 [==============================] - 9s 265ms/step - loss: 9.3628e-04 Epoch 84/100 31/31 [==============================] - 9s 277ms/step - loss: 8.3433e-04 Epoch 85/100 31/31 [==============================] - 7s 212ms/step - loss: 8.0432e-04 Epoch 86/100 31/31 [==============================] - 8s 271ms/step - loss: 8.9565e-04 Epoch 87/100 31/31 [==============================] - 7s 212ms/step - loss: 8.0199e-04 Epoch 88/100 31/31 [==============================] - 7s 212ms/step - loss: 8.5778e-04 Epoch 89/100 31/31 [==============================] - 9s 287ms/step - loss: 7.7508e-04 Epoch 90/100 31/31 [==============================] - 10s 323ms/step - loss: 7.3071e-04 Epoch 91/100 31/31 [==============================] - 7s 219ms/step - loss: 8.3029e-04 Epoch 92/100 31/31 [==============================] - 8s 276ms/step - loss: 8.0912e-04 2s - loss: 8 Epoch 93/100 31/31 [==============================] - 7s 214ms/step - loss: 7.2412e-04 Epoch 94/100 31/31 [==============================] - 9s 279ms/step - loss: 9.1244e-04 Epoch 95/100 31/31 [==============================] - 8s 257ms/step - loss: 9.3773e-04 Epoch 96/100 31/31 [==============================] - 9s 265ms/step - loss: 8.2399e-04 Epoch 97/100 31/31 [==============================] - 9s 281ms/step - loss: 8.6276e-04 Epoch 98/100 31/31 [==============================] - 7s 211ms/step - loss: 7.6608e-04 Epoch 99/100 31/31 [==============================] - 8s 275ms/step - loss: 7.3418e-04 Epoch 100/100 31/31 [==============================] - 7s 211ms/step - loss: 7.8573e-04
<keras.callbacks.History at 0x1a3da1d5ee0>
real_data_30 = [inputs[len(inputs) - 120:len(inputs + 1), 0]]
real_data_30 = np.array(real_data_30)
real_data_30 = np.reshape(real_data_30 , (real_data_30.shape[0], real_data_30.shape[1], 1))
prediction_30 = regressor_30.predict(real_data_30)
prediction_30 = sc.inverse_transform(prediction_30)
print(f"Prediction : {prediction_30.transpose()}")
Prediction : [[140.57155] [141.63603] [141.68106] [140.95215] [140.95436] [141.08115] [140.24341] [139.09885] [141.76582] [140.32637] [141.23013] [140.96193] [140.86388] [140.9999 ] [140.46709] [140.21004] [139.78902] [140.9546 ] [141.26627] [141.10019] [140.65361] [140.15009] [140.56523] [140.68362] [140.26105] [140.81291] [141.64565] [141.49438] [140.22234] [140.0946 ]]
DataFrame = pd.DataFrame(prediction_30)
prediction = DataFrame.T
Prediction_Total = pd.concat((dataset_test['Close'],prediction), axis=0,sort=True,ignore_index=True)
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(prediction, color = 'blue', label = 'Predicted Stock Price')
plt.title('Meezan Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Meezan Stock Price')
plt.legend()
plt.grid()
plt.show()
plt.figure(figsize=(20, 6),dpi=80)
plt.plot(Prediction_Total, color = 'blue', label = 'Predicted Stock Price')
plt.plot(dataset_test['Close'], color = 'red',label='Real Stock Price')
plt.title('Meezan Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Meezan Stock Price')
plt.legend()
plt.grid()
plt.show()
regressor_30.summary()
Model: "sequential_3"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_12 (LSTM) (None, 120, 50) 10400
dropout_12 (Dropout) (None, 120, 50) 0
lstm_13 (LSTM) (None, 120, 50) 20200
dropout_13 (Dropout) (None, 120, 50) 0
lstm_14 (LSTM) (None, 120, 50) 20200
dropout_14 (Dropout) (None, 120, 50) 0
lstm_15 (LSTM) (None, 50) 20200
dropout_15 (Dropout) (None, 50) 0
dense_3 (Dense) (None, 30) 1530
=================================================================
Total params: 72,530
Trainable params: 72,530
Non-trainable params: 0
_________________________________________________________________
import cufflinks as cf
import plotly.graph_objects as go
from plotly.offline import iplot, init_notebook_mode
import matplotlib.pyplot as plt
cf.go_offline()
init_notebook_mode()
TICKER = "Meezan"
dataset_train["Close"].plot(title=f"{TICKER}'s stock price",figsize=(20, 6),grid=True,xlabel='Time',ylabel='Price')
<AxesSubplot:title={'center':"Meezan's stock price"}, xlabel='Time', ylabel='Price'>
qf = cf.QuantFig(dataset_train, title="Meezan's stock price in 2021", name='Meezan')
qf.iplot()
fig = go.Figure(data=
[go.Candlestick(x=dataset_train.index,
open=dataset_train["Open"],
high=dataset_train["High"],
low=dataset_train["Low"],
close=dataset_train["Close"])]
)
fig.update_layout(
title=f"{TICKER}'s adjusted stock price",
yaxis_title="Price ($)"
)
fig.show()
qf = cf.QuantFig(dataset_train, title="Meezan's stock price in 2021", name='Meezan')
qf.add_sma(periods=14, column='Close', color='purple')
qf.iplot()
qf = cf.QuantFig(dataset_train, title="Meezan's stock price in 2021", name='Meezan')
qf.add_sma([10, 50], width=2, color=['yellow', 'red'])
qf.iplot()
qf.add_rsi(periods=14, color='green')
qf.iplot()
qf.add_bollinger_bands(periods=20, boll_std=2 ,colors=['orange','grey'], fill=True)
qf.iplot()
qf.add_volume()
qf.iplot()
qf.add_macd()
qf.iplot()